package com.example.algorithm.hash;

import java.util.HashMap;

/**
 * @author : zhy
 * @since : 2022/7/23
 * 有效的字符串异位词
 */
public class HashWords {

    public boolean isAnagram(String s, String t) {
        int lenS=s.length();
        int lenT=t.length();
        if(lenS!=lenT){
            return false;
        }
        HashMap map=new HashMap<String, Integer>();
        for(int i=0;i<lenS;i++)
        {
            if(map.containsKey(s.charAt(i))){
                Integer count= (Integer) map.get(s.charAt(i));
                count++;
                map.put(s.charAt(i),count);
            }else {
                map.put(s.charAt(i),1);
            }
        }
        for(int i=0;i<lenS;i++)
        {
            if(map.containsKey(t.charAt(i)))
            {
                Integer count= (Integer) map.get(t.charAt(i));
                if(count<1){
                    return false;
                }
                count--;
                map.put(t.charAt(i),count);
            }else {
                return false;
            }
        }
        return true;
    }


    /**
     * 字符计数法
     * @param s
     * @param t
     * @return
     */
    public boolean isAnagram1(String s, String t)
    {
        int lenS=s.length();
        int lenT=t.length();
        if(lenS!=lenT)
        {
            return false;
        }
        char[] arrayS = s.toCharArray();
        char[] arrayT = t.toCharArray();
        int []result=new int[26];
        for(char c:arrayS)
        {
            result[c-'a']++;
        }
        for(char c:arrayT)
        {
            result[c-'a']--;
        }
        for(int i:result){
            if(i<0){
                return false;
            }
        }
        return true;
    }


    public static void main(String[] args) {
        String s = "anagram";
        String t = "nagaram";
        HashWords hashWords = new HashWords();
        System.out.println(hashWords.isAnagram(s, t));
    }
}
